home *** CD-ROM | disk | FTP | other *** search
/ Mac-Source 1994 July / Mac-Source_July_1994.iso / C and C++ / Utilities / Winter Shell 1.0d2 / Source / Libraries / TaskLib / TaskLib.c next >
Encoding:
C/C++ Source or Header  |  1994-01-20  |  1.3 KB  |  57 lines  |  [TEXT/KAHL]

  1. /* Functions for installing and executing routines. written esepcially
  2.     for executing user-defined periodic actions within a copy operation
  3.     without having to modify the interface to the copy routines, but could
  4.     be used for other purposes as well.
  5.     
  6.     94/01/05 aih added data parameter to task handler
  7.     93/12/02 aih made a little more generally usefull
  8.     93/10/13 aih created */
  9.  
  10. #include "MemoryLib.h"
  11. #include "TaskLib.h"
  12.  
  13. Boolean TaskValid(TaskHandle task)
  14. {
  15.     if (! HandleValidSize(task, sizeof(TaskType))) return(false);
  16.     if (! (**task).action) return(false);
  17.     return(true);
  18. }
  19.  
  20. void *TaskData(TaskHandle task)
  21. {
  22.     require(TaskValid(task));
  23.     return((**task).data);
  24. }
  25.  
  26. TaskHandle TaskInsert(TaskHandle list, TaskActionType action, void *data)
  27. {
  28.     TaskHandle task;
  29.     
  30.     require(! list || TaskValid(list));
  31.     require(action != NULL);
  32.     task = HandleBeginClear(sizeof(TaskType));
  33.     (**task).action = action;
  34.     (**task).data = data;
  35.     return(LLHInsert(list, task));
  36. }
  37.  
  38. TaskHandle TaskDelete(TaskHandle list, TaskHandle task)
  39. {
  40.     require(! list || TaskValid(list));
  41.     require(! task || TaskValid(task));
  42.     if (list && task) {
  43.         list = LLHDelete(list, task);
  44.         HandleEnd(task);
  45.     }
  46.     return(list);
  47. }
  48.  
  49. void TasksExecute(TaskHandle task)
  50. {
  51.     while (task) {
  52.         TaskHandle next = LLHNext(task);
  53.         (**task).action(task, (**task).data);
  54.         task = next;
  55.     }
  56. }
  57.